from enum import Enum

# Want to run
# S2S_EMB-OH_2017-03-08_VS5000_BS32_HD1024_DHL2_ED300
# S2S_EMB-OH_2017-03-08_VS2+5000_BS32_HD512_DHL2_ED300
# S2S_EMB-OH_2017-03-08_VS2+5000_BS32_HD1024_DHL1_ED300

class EmbeddingMethod(Enum):
	EMBEDDING_TO_EMBEDDING = "2EMB"
	EMBEDDING_TO_ONEHOT = "EMB-OH"


class EmbToOnehotConf(Enum):
	NB_WORDS = 1000
	EMBEDDING_DIMENSION = 300
	EPOCHS = 200
	BATCH_SIZE = 128
	VAL_DATA_SIZE = 3000
	HIDDEN_DIM = 1024
	LOSS = 'categorical_crossentropy'
	OUTPUT_LAYER_ACTIVATION = 'softmax'
	EMBEDDING_METHOD = EmbeddingMethod.EMBEDDING_TO_ONEHOT
	DECODER_HIDDEN_LAYERS = 1
	WORD_EMBEDDING_METHOD = "glove"
	MAX_SEQUENCE_LENGTH = 5

class EmbToOnehotTwoLSTMConf(Enum):
	NB_WORDS = 5000
	EMBEDDING_DIMENSION = 300
	EPOCHS = 200
	BATCH_SIZE = 32
	VAL_DATA_SIZE = 3000
	HIDDEN_DIM = 256
	LOSS = 'categorical_crossentropy'
	OUTPUT_LAYER_ACTIVATION = 'softmax'
	EMBEDDING_METHOD = EmbeddingMethod.EMBEDDING_TO_ONEHOT
	DECODER_HIDDEN_LAYERS = 2
	WORD_EMBEDDING_METHOD = "glove"
	MAX_SEQUENCE_LENGTH = 5



class ContrastiveEmbToEmbConf(Enum):
	NB_WORDS = 1000
	EMBEDDING_DIMENSION = 300
	EPOCHS = 200
	BATCH_SIZE = 32
	VAL_DATA_SIZE = 3000
	HIDDEN_DIM = 256
	LOSS = "contrastive_loss"
	OUTPUT_LAYER_ACTIVATION = 'relu'
	EMBEDDING_METHOD = EmbeddingMethod.EMBEDDING_TO_EMBEDDING
	DECODER_HIDDEN_LAYERS = 1
	WORD_EMBEDDING_METHOD = "glove"
	MAX_SEQUENCE_LENGTH = 5

class EmbToEmbConf(Enum):
	NB_WORDS = "all"
	EMBEDDING_DIMENSION = 300
	EPOCHS = 200
	BATCH_SIZE = 128
	VAL_DATA_SIZE = 3000
	HIDDEN_DIM = 100
	LOSS = "mse"
	OUTPUT_LAYER_ACTIVATION = 'relu'
	EMBEDDING_METHOD = EmbeddingMethod.EMBEDDING_TO_EMBEDDING
	DECODER_HIDDEN_LAYERS = 1
	WORD_EMBEDDING_METHOD = "glove"
	MAX_SEQUENCE_LENGTH = 5

class W2VEmbToEmbConf(Enum):
	NB_WORDS = 1000
	EMBEDDING_DIMENSION = 50
	EPOCHS = 200
	BATCH_SIZE = 128
	VAL_DATA_SIZE = 3000
	HIDDEN_DIM = 50
	LOSS = "mse"
	OUTPUT_LAYER_ACTIVATION = 'relu'
	EMBEDDING_METHOD = EmbeddingMethod.EMBEDDING_TO_EMBEDDING
	DECODER_HIDDEN_LAYERS = 1
	WORD_EMBEDDING_METHOD = "word2vec"
	MAX_SEQUENCE_LENGTH = 15
	DATASET = "flowers"
